從Xcode6
開始導入了IBDesignable
與IBInspectable
,讓開發者可以使用StoryBoard
來改變使用程式碼建立的UI元件屬性,相當於延伸StoryBoard
的功能,類似於User Defined Runtime Attributes
。
但是相對於User Defined Runtime Attributes
,IBDesignable
可以即時的顯示在StoryBoard
上,我個人覺得會比較方便一點。
正所謂Learn In Do
,我直接實作一個小小的範例,之後再講比較複雜點的應用。
直接開啟一個新專案,並且新增一個類別
MyButton
,並且在var
之前加上@IBInspectable
,讓這個屬性可以被StoryBoard
編輯:
import UIKit
class MyButton: UIButton {
@IBInspectable var cornerRadius: CGFloat = 0.0 {
didSet {
//這個屬性在設定圓角的大小
layer.cornerRadius = cornerRadius
//這個屬性在決定是否要讓元件被裁切,如果這個屬性是false,則設置cornerRadius不會有效果
layer.masksToBounds = (cornerRadius > 0)
}
}
}
現在切換到StoryBoard
並且新增一個元件(UIButton),設置一下背景顏色,讓這個UIButton
類別繼承MyButton
:
就可以發現多了一個可以設定的屬性,就是我們剛剛設定的圓角屬性,現在點擊它,會發現UIButton
沒有反應,因為我們還沒有設定IBDesignable
,這個屬性讓我們可以即時檢閱。
將@IBDesignable
加在class MyButton
前:
現在完整的程式碼應該長得像這樣子:
import UIKit
@IBDesignable class MyButton: UIButton {
@IBInspectable var cornerRadius: CGFloat = 0.0 {
didSet {
//這個屬性在設定圓角的大小
layer.cornerRadius = cornerRadius
//這個屬性在決定是否要讓元件被裁切,如果這個屬性是false,則設置cornerRadius不會有效果
layer.masksToBounds = (cornerRadius > 0)
}
}
}
現在已經可以使用StoryBoard
的屬性檢閱器更改圓角大小以及即時顯示了,具體效果如下:
更複雜的應用之後講...也有可能我明天想到其他有趣的東西,就講其他東西了...